package com.cx.base.day24_RabbitMQ;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @Author: songyahui
 * @Date: 2020/8/24 20:04
 * @Version 1.0
 */
public class Recv2 {
    private final static String QUEUE_NAME = "simple_queue2";

    public static void main(String[] args) {

        try {
//            获取到连接
            Connection con = ConnectionUtil.getConnection();
//            创建通道
            Channel channel = con.createChannel();
//            声明队列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//            定义队列的消费者
            DefaultConsumer consumer = new DefaultConsumer(channel) {
                //                获取消息，并且处理，这个方法类似事件监听，如果有消息的时候，会被自动调用
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//                    body 即消息体
                    String msg = new String(body);
//                    int i = 1/0
                    System.out.println("[x] received :" + msg + "!");
                    int i = 1 / 0;
//                    手动进行ack
//                    第二个参数，表示是否同时确认多个消息,false指代一次确认一个消息
                    channel.basicAck(envelope.getDeliveryTag(), false);
                }
            };
//            监听队列，第二个参数：是否自动进行消息确认
            channel.basicConsume(QUEUE_NAME, false, consumer);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
